namespace Study405 {



  // is 关键字


  // 语法
  // function isSpecificType(value: any): value is SpecificType {
  //   // 检查逻辑
  // }

  interface Cat {
    meow(): void;
  }

  interface Dog {
    bark(): void;
  }


  // 判断是否是  类型 返回布尔值
  function isCat(animal: Cat | Dog): animal is Cat {
    return (animal as Cat).meow !== undefined;
  }

  function makeSound(animal: Cat | Dog) {
    if (isCat(animal)) {
      animal.meow(); // 在这个分支中，TypeScript 认为 animal 是 Cat
    } else {
      animal.bark(); // 在这个分支中，TypeScript 认为 animal 是 Dog
    }
  }



  type Fish = { swim: () => void };
  type Bird = { fly: () => void };

  function isFish(pet: Fish | Bird): pet is Fish {
    return (pet as Fish).swim !== undefined;
  }

  function move(pet: Fish | Bird) {
    if (isFish(pet)) {
      pet.swim(); // pet 被推断为 Fish
    } else {
      pet.fly(); // pet 被推断为 Bird
    }
  }




}